package com.tjec.project.businessWorkbench.service;

import com.tjec.framework.web.domain.TreeSelect;
import com.tjec.framework.web.domain.TreeSelectNew;
import com.tjec.framework.web.domain.TreeSelectProjectDoc;
import com.tjec.project.businessWorkbench.domain.BmsProjectDocCatalog;
import com.tjec.project.businessWorkbench.domain.ImportBmsBusinessTask;
import com.tjec.project.businessWorkbench.domain.ImportBmsProjectDocCatalog;

import java.util.List;

/**
 * 项目文档目录Service接口
 * 
 * @author pangyongfeng
 * @date 2020-04-26
 */
public interface IBmsProjectDocCatalogService 
{
    /**
     * 查询项目文档目录
     * 
     * @param guid 项目文档目录ID
     * @return 项目文档目录
     */
    public BmsProjectDocCatalog selectBmsProjectDocCatalogByGuid(String guid);

    /**
     * 查询项目文档目录列表
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogList(BmsProjectDocCatalog bmsProjectDocCatalog);
    
    /**
     * 优化版-查询项目文档目录列表
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogListNew(BmsProjectDocCatalog bmsProjectDocCatalog);
    
    /**
     * 优化版-根目录-查询项目文档目录列表
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogListFirstNew(BmsProjectDocCatalog bmsProjectDocCatalog);
    
    /**
     * 查询导出项目文档目录列表
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 项目文档目录集合
     */
    public List<BmsProjectDocCatalog> selectBmsProjectDocCatalogExportList(BmsProjectDocCatalog bmsProjectDocCatalog);

    /**
     * 新增项目文档目录
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 结果
     */
    public int insertBmsProjectDocCatalog(BmsProjectDocCatalog bmsProjectDocCatalog);
    
    /**
     * 新版-新增项目文档目录
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 结果
     */
    public BmsProjectDocCatalog insertBmsProjectDocCatalogNew(BmsProjectDocCatalog bmsProjectDocCatalog);

    /**
     * 修改项目文档目录
     * 
     * @param bmsProjectDocCatalog 项目文档目录
     * @return 结果
     */
    public int updateBmsProjectDocCatalog(BmsProjectDocCatalog bmsProjectDocCatalog);

    /**
     * 删除项目文档目录信息
     * 
     * @param guid 项目文档目录ID
     * @return 结果
     */
    public int deleteBmsProjectDocCatalogByGuid(String guid);
    
    /**
     * 删除项目文档目录信息-校验
     * 
     * @param guid 项目文档目录ID
     * @return 结果
     */
    public int removeCheck(String guid);
    
    /**
     * 构建前端所需要树结构
     * 
     * @param bmsProjectDocCatalogs 目录列表
     * @return 树结构列表
     */
    public List<BmsProjectDocCatalog> buildDocCatalogTree(List<BmsProjectDocCatalog> bmsProjectDocCatalogs);

    /**
     * 构建前端所需要下拉树结构
     * 
     * @param depts 目录列表
     * @return 下拉树结构列表
     */
    public List<TreeSelectNew> buildDocCatalogTreeSelect(List<BmsProjectDocCatalog> bmsProjectDocCatalogs);
    
    /**
     * 导入模版项目文档目录
     * @param bmsProjectDocCatalogs
     * @param businessId 业务id
     * @return
     */
    public int importBmsProjectDocCatalogs(List<ImportBmsProjectDocCatalog> bmsProjectDocCatalogs,String businessId);
    
    /**
     * 导入项目文档目录
     * @param bmsProjectDocCatalogs
     * @param businessId 业务id
     * @return
     */
    public int importBmsProjectDocCatalogsList(List<BmsProjectDocCatalog> bmsProjectDocCatalogs);
    
    /**
     * 查询本业务下是否有收资管理、成果校审、归档补充资料等目录
     * 
     * @param businessId 业务id
     * @param name 目录名称
     * @return
     */
    public int checkDocCatalog(String businessId,String isEdit);
    
    /**
     * 添加默认目录
     * @param businessId 业务id
     * @param flag 目录标识，0:收资管理，2:归档补充资料，3：成果校审
     */
    public void addDocCatalog(String businessId,String flag);
    
    /**
     * 查询本业务下收资管理、成果校审、归档补充资料等目录的guid
     * @param businessId 业务id
     * @param isEdit 目录类别
     * @return
     */
    public String selectDocCatalog(String businessId,String isEdit);
    
    /**
     * 根据项目文档目录父级id和名称获取项目文档目录
     * @param parentId 项目文档目录父级id
     * @param name 目录名称
     * @return
     */
    public BmsProjectDocCatalog selectCatalogByParentIdAndName(String parentId,String name);
    
    /**
     * 查询目录下的文件数量
     * @param catalogId 目录id
     * @return
     */
    public Integer selectDocCounts(String catalogId);
    
    /**
     * 查询目录下的附件数量
     * @param catalogId 目录id
     * @return
     */
    public Integer selectAttachmentsCounts(String catalogId);
    
    /**
     * 查询收资管理目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectPickUpCounts(String businessId);
    
    /**
     * 查询资料归档补充目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectArchiveCounts(String businessId);
    
    /**
     * 查询成果校审目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectResultCounts(String catalogId);
    
    /**
     * 查询收资管理目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectPickUpSimpleCounts(String businessId);
    
    /**
     * 查询资料归档补充目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectArchiveSimpleCounts(String businessId);
    
    /**
     * 查询成果校审目录下的文件数量
     * @param businessId 业务id
     * @return
     */
    public Integer selectResultSimpleCounts(String catalogId);

    /**
     *  查询项目文档目录下的文件数量
     * @param catalogId
     * @return
     */
    public Integer selectDocSimpleCounts(String catalogId);

    /**
     *  构建树结构
     * @param bmsProjectDocCatalogs
     * @return
     */
    public List<TreeSelectProjectDoc> buildDocCatalogTreeSelectProjectDoc(List<BmsProjectDocCatalog> bmsProjectDocCatalogs);
}
